#ifndef GAME_H
#define GAME_H
//--------------------------------------------------------------------------------
#include "Defines.h"
#include "Entity2D.h"
#include "Structs.h"
#include "Timer.h"
#include "Window.h"
#include "Renderer.h"
//--------------------------------------------------------------------------------
namespace ns
{
	class Importer;

	class ENGINE_API Game
	{
		public:
			Game(HINSTANCE hInstance);
			~Game();
			bool StartUp();//this method should be called at the beginning of the application. calls OnStartUp.
			bool Loop();//executes at every frame. calls OnLoop.
			bool ShutDown();//this method should be called before the object is destroyed. calls OnShutDown.
		
			//Renderer* GetRenderer();
			void addEntity(Entity2D* pkEntity);
			
			Timer timer;//for fps

			//dani
			Importer* getImporter ();

		private:
			HINSTANCE m_hInstance;
			Window* m_pkWindow;			
			Renderer* m_pkRenderer;
			
			std::vector<Entity2D*> m_pvEntitiesToDraw;
			
			//dani
			Importer* m_pkImporter;

		protected:
			virtual bool OnStartUp() = 0;
			virtual bool OnLoop() = 0;
			virtual bool OnShutDown() = 0;
	};
	#include "Game.inl"
}
//--------------------------------------------------------------------------------
#endif